第3章 数据链路层
数据链路层:
- 使用的信道
- 点对点信道
- 广播信道
- 三个基本问题:封装成帧、透明传输和差错检测
- 以太网MAC层的硬件地址
- 适配器、转发器、集线器、网桥、以太网交换机
使用点对点信道的数据链路层
点对点信道的数据链路层的协议数据单元——帧。
数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接受到的帧中的数据取出并上交给网络层。
数据链路层的协议有许多种,但有三个共同的基本问题:
封装成帧
在一段数据的前后分别添加首部和尾部,构成帧。
首部和尾部的一个重要作用是进行帧定界(即确定帧的界限)
当数据是可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符
ASCII码是7位,有128种不同的ASCII码,可打印95个,不可打印33个
- 帧开始符使用控制字符SOH,编码0x01(00000001)
- 帧结束符使用控制字符EOT,编码0x04(00000100)
只有收到的帧同时具有SOH和EOT,才是一个完整的帧,对不完整的帧必须丢弃
每一种链路层协议都规定了所能传送的帧的数据部分的长度上限——最大传送单元MTU
透明传输
当用控制字符充当帧定界时,传输的数据一定不允许使用和帧定界的控制字符一样的字符编码,否则会产生帧定界错误
当传送的数据是文本文件组成的帧时,文本字符都是键盘输入的,数据部分显然不会出现控制字符,即无论从键盘输入什么字符都可以通过这样的帧传输过去,这样的传输就是透明传输
当数据部分是非ASCII码文本文件时,可能出现帧定界错误,为了解决透明传输问题,必须设法使数据中可能出现的控制字符SOH和EOT在接收端不被解释为控制字符:
字节填充:又称字符填充,是指在SOH和EOT前面插入一个转义字符ESC(编码为0x1B,00011011)
如果转义字符也出现在数据中时,也在其前面加上ESC
差错检测
- 比特在传输过程中可能产生差错,使1变成0,0变成1,这叫做比特差错
- 误码率:平均每传送$10^{10}$个比特就会出现一个比特差错
- 循环冗余检验CRC:一种检错方法,在数据M后面添加供差错检测的n位冗余码
- 为了进行检错而添加的冗余码常称为帧检验序列FCS
在数据链路层若仅仅使用循环冗余检验CRC差错检测技术,则只能做到对帧的无差错接受,若帧检测出差错,则接收端收到后丢弃,没有被接受。
数据链路层并不向网络层提供**“可靠传输”**的服务,可靠传输是指:数据链路层发送端发送什么,在接收端就收到什么。
传输差错可分为两大类:
- 比特差错
- 帧丢失、帧重复、帧失序
对于通信质量良好的有线传输链路,数据链路层协议不使用确认和重传机制,不要求数据链路层向上提供可靠传输的服务
对于通信质量较差的无线传输链路,数据链路层协议使用确认和重传机制,数据链路层向上提供可靠传输的服务
点对点协议PPP
互联网用户通常都要连接到某个ISP才能接入互联网,PPP协议就是用户计算机和ISP进行通信时使用的数据链路层协议。
使用广播信道的数据链路层
局域网的主要特点:网络为一个单位所拥有,且地理范围和站点数目均有限
局域网的主要优点:
- 具有广播功能,一个站点可方便访问全网
- 便于系统的扩展和逐渐演变,各设备位置灵活
- 提高了系统的可靠性、可用性和生存性
局域网的网络拓扑结构可分类为三种:
- 星型网
- 环形网
- 总线网
共享信道要着重考虑的一个问题是如何使众多用户合理方便地共享通信媒体资源,这在技术上有两种方法:
- 静态划分信道:如信道复用技术,代价较高,不适合局域网使用
- 动态媒体接入控制:又称多点接入,分为两类:
- 随机接入:用户可随机发送消息,缺点是可能产生碰撞(即发送了冲突)
- 受控接入:不能随机发送消息而必须服从一定的控制,典型的有分散控制的令牌局域网和集中控制的多点线路探询,或称为轮询
以太网的两个标准:
- DIX Ethernet V2
- IEEE 802.3
为了使数据链路层能更好地适应多种局域网标准,IEEE 802委员会把局域网的数据链路层拆分成两个子层:
- 逻辑链路控制LLC:与传输媒体无关
- 媒体接入控制MAC:与接入到传输媒体有关的内容都放在MAC子层
随着局域网市场的发展,DIX Ethernet V2占据了主流地位,因此IEEE 802委员会制定的LLC的作用就消失了,很多厂商适配器仅装有MAC协议而已。
适配器:又称网络接口卡NIC,简称网卡,其实现的功能同时包含了数据链路层和物理层的功能。
适配器的功能:
- 进行数据串行传输和并行传输的转换
- 适配器和局域网之间的通信通过电缆或双绞线以串行方式进行
- 适配器和计算机之间的通信通过主板上的I/O总线以并行方式进行
- 数据缓存
- 计算机的硬件地址存放在适配器的ROM中
CSMA/CD(载波监听多点接入/碰撞检测)协议:减少总线传输的数据碰撞。
- 多点接入:说明是总线型网络,协议实质是“载波监听”和“碰撞检测”
- 载波监听:用电子技术检测总线上有没有其它计算机也在发送,即检测信道。总线上实际没有载波,借用名词而已。不管在发送前,还是发送中,没个站都必须不停地检测信道
- 碰撞检测:即边发送边监听,也称冲突检测。一旦发现总线上出现了碰撞,适配器就立即停止发送,免得继续发送无效数据。
局域网的分析中,常把总线上的单程端到端传播时延记为r,当发送数据后,最迟要经过两倍的总线端到端的传播时延(2r)或端到端往返传播时延才知道是否发生了碰撞。
使用CSMA/CD协议的以太网只能进行双向交替通信(半双工通信)。
发送端至多经过2r时间后就可以知道是否发生碰撞,因此端到端往返时间2r称为争用期,又称为碰撞窗口,经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发送碰撞。
以太网使用截断二进制指数退避算法来确定碰撞后重传的时机:碰撞后随机推迟一段时间再发送。
10BASE-T:10代表10Mbit/s,BASE表示连接线上的信号是基带信号,T代表双绞线
10BASE-F:10代表10Mbit/s,BASE表示连接线上的信号是基带信号,T代表光纤,主要用于集线器直接的远程连接
集线器的特点:
- 使用的局域网在物理上是星型网,逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是CSMA/CD协议,同一时刻之多只允许一个站发送数据
- 一个集线器有多个接口,接口是RJ-45插头,用两对双绞线与一台计算机的适配器相连,集线器像一个多接口的转发器
- 集线器工作在物理层
- 集线器采用了专门的芯片,进行非自适应串音回波抵消
MAC地址:又称硬件地址或物理地址,IEEE 802标准为局域网规定了一种48位的全球地址,固化在适配器的ROM中的地址。
- 前3个字节,高位24位:组织唯一标识符OUI,由IEEE的注册管理机构RA负责分配
- 后3个字节,低位24位:扩展标识符,厂家自行指派
IEEE规定地址字段的第一字节的最低位为I/G位,表示Individual/Group,因此IEEE只分配地址字段前三个字节中的23位:
- 为0时,地址字段表示一个单个站地址
- 为1时,地址字段表示组地址,用来进行多播
IEEE考虑到有人并不愿意向IEEE的RA购买OUI,为此把地址字段第1字节的最低第二位规定为G/L位,表示Global/Local,以太网几乎不理会这个G/L位:
- 为0时,表示全球管理,IEEE分配都属于全球管理,保证全球没有相同地址
- 为1时,表示本地管理,用户可任意分配网络上的地址
地址记法中有两种标准:
- 第一种记法就是把每一字节的最低位写在最左边(最左边的最低位是第一位),IEEE802.3标准采用这种记法
- 第二种记法就是把每一字节的最高位写在最左边(最左边的最高位是第一位)
发送数据时,两种记法都是按照字节的顺序发送,但每一个字节先发送哪一位不同:第一种记法先发送最低位,第二种先发送最高位
适配器具有过滤功能,不是发往本站的帧会被丢弃,“发往本站的帧”包括三种:
- 单播帧(一对一):收到的帧的MAC地址与本站的硬件地址相同
- 广播帧(一对全体):发送给本局域网上所有站点的帧(全1地址)
- 多播帧(一对多):发送给本局域网上一部分站点的帧
适配器有一种特殊的工作方式:混杂方式。将局域网中的帧都接收。
嗅探器就是使用了设置为混杂方式的网络适配器,可帮助学习网络的人员更好地理解各种网络协议的工作原理,可帮助网络维护和管理员监听和分析以太网上的流量
MAC帧的格式:
- IEEE的802.3标准
- DIX Ethernet V2标准,即以太网V2标准,用的最多
- 目的地址:6字节
- 源地址:6字节
- 类型字段:2字节,标志上一层使用的是什么协议
- 数据字段:46~1500字节之间(最小数据段长度46字节 = 最小长度64字节 - 18字节的首部和尾部),当上层使用IP协议时,其首部就有一个“总长度”字段,总长度加上填充字段的长度等于MAC帧数据字段的长度
- 帧验证序列FCS:4字节,使用CRC检验
- 在传输媒体上实际传送的要比MAC帧还多8个字节,这是因为一个站在刚开始接收MAC帧时,由于适配器的时钟尚未与到达的比特流达成同步,因此MAC帧的最前面的若干位就无法接收,结果使整个的MAC帧成为无用帧。接收端为了迅速实现同步,从MAC子层向下传到物理层时还要在帧的前面插入8字节(由硬件生成):
- 第一个字段:7个字节的同步码(1和0的交替码),使接收端的适配器在接收MAC帧时能够迅速调整其时钟直至和发送端同步,实现位同步
- 第二个字段:1字节的帧开始界定符,定义为10101011。
以太网上传输数据以帧为单位,各帧之间必须有一定间隔,不需要帧结束定界符,也不需要使用字节插入来保证透明传输。
扩展的以太网
拓展的以太网在网络层看来仍然是一个网络。
在物理层扩展以太网:扩展以太网的地理覆盖范围。
- 光纤、集线器
- 缺点:
- 合并了冲突域,降低了通信效率
- 不同以太网技术的系无法通过集线器互连
在数据链路层扩展以太网:
- 网桥、以太网交换机(第二层交换机)
- 以太网交换机实际就是一个多接口网桥,工作在全双工模式,相互通信的主机都是独占传输媒体,无碰撞地传输数据。交换机能够存储转发,内部通过自学习算法建立交换表
- 当网络中有冗余线路时,自学习算法可能导致环路,此时需要使用生成树协议STP
总线以太网使用CSMA/CD协议,以半双工方式工作;以太网交换机不使用共享总线,没有碰撞问题,因此不需要使用CSMA/CD协议,而是以全双工方式工作。虽然连以太网的重要协议CSMA/CD都不使用了,但还是叫做以太网,原因是它的帧结构未改变,仍然采用以太网的帧结构。
利用以太网交换机可以很方便地实现虚拟局域网:虚拟局域网VLAN是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有共同的需求。每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的计算机属于哪一个VLAN。属于局域网给用户提供的一种服务,不属于新型局域网。
每一个VLAN的计算机可处在不同的局域网中,也可以不在同一层楼中。
隔绝冲突域:使用虚拟局域网限制了接收广播信息的计算机数,使得网络不会因为传播过多的广播信息(即所谓的广播风暴)而引起性能恶化。
普通的以太网帧格式无法区分是否划分了虚拟局域网,IEEE批准了802.3ac标准定义了以太网的帧格式的扩展以便支持虚拟局域网,插入了4字节的VLAN标记,称为802.1Q帧。
在上图中,粗线线路传输的是802.1Q帧,其它链路传输的仍然是普通的以太网帧。
VLAN标记:
- IEEE 802.1Q标记类型:前两个字节,设置为0x8100(10000001 00000000),当数据链路层检测到MAC帧的源地址字段后面的两个字节的值是0x8100时,就知道插入了4字节的VLAN标记,于是接着检查后面2个字节的内容。
- 标记控制信息:后两个字节
- 前3位:用户优先级字段
- 第4位:规范格式指示符CFI
- 后12位:VLAN标识符VID,唯一标志了以太网帧属于哪一个VLAN
使用了VLAN的以太网帧的最大帧长度从原来的1518字节(1500字节的数据 + 18字节的首部)变成1522字节。
高速以太网
100BASE-T是在双绞线上传送100Mbit/s基带信号的星型拓扑以太网,仍使用802.3的CSMA/CD协议,称为快速以太网:
- 可使用以太网交换机,则在全双工方式下工作无冲突产生,CSMA/CD协议在此方式下不起作用
- MAC帧格式仍然是IEEE 802.3标准规定的帧格式
吉比特以太网的标准IEEE 802.3z有几个特点:
- 允许1Gbit/s下以全双工和半双工两种方式工作
- 使用IEEE 802.3协议规定的帧格式
- 在半双工方式下使用CSMA/CD协议,全双工方式不使用
- 与10BASE-T和100BASE-T技术向后兼容
- 物理层使用的技术
- 现有以太网
- ANSI制定的光纤通道FC
10吉比特以太网只工作在全双工方式。
宽带接入技术PPPoE:把PPP协议中的PPP帧再封装到以太网中来传输。